package com.cskaoyan.javase.oop1._4compare;

/**
 * 局部变量和成员变量的比较，我们从以下五个方面去比较：
 * 在类中定义的位置不同
 *      局部变量: 定义在方法或者其他作用域的局部变量
 *      成员变量: 定义在类体中,局部位置以外的成员位置
 * 在内存中的位置不同
 *      局部变量: 方法的栈帧中
 *      成员变量: 堆上的对象中
 * 生命周期不同
 *      局部变量: 和方法的栈帧同生共死
 *      成员变量: 对象被销毁后成员变量也被销毁了,
 *          但是实际上当对象成为垃圾后,对象失去了作用,成员变量自然也没有作用了
 * 有无默认初始化不同
 *      局部变量: 包括基本数据类型变量,和引用数据类型的引用.它们是没有默认值的
 *          需要手动初始化赋值才能够使用
 *      成员变量: 有,包括对象中的成员变量,数组中元素,它们都有默认值
 * 作用范围
 *      局部变量: 局部位置(大括号)内部生效
 *      成员变量: 在整个类中都是能够生效的.但是成员方法中可以直接访问,static方法是不能直接访问的.
 *
 * @since 14:50
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    int a;

    public void test() {
        System.out.println(a);
    }

    public static void testStatic(){
        // System.out.println(a);
    }
}
